সেশন ম্যানেজমেন্ট

Web Development - কোডইগনাইটার (Codeigniter) - CodeIgniter এর সেশন এবং কুকিজ |

Session Management হলো ওয়েব অ্যাপ্লিকেশনের একটি গুরুত্বপূর্ণ অংশ, যা ব্যবহারকারীর ডেটা নির্দিষ্ট সময় পর্যন্ত সংরক্ষণ করে। CodeIgniter একটি বিল্ট-ইন Session Library সরবরাহ করে, যা ব্যবহারকারীর সেশন পরিচালনা করা সহজ করে তোলে।


সেশন লাইব্রেরি লোড করা

CodeIgniter 4-এ Session লাইব্রেরি ডিফল্টভাবে লোড করা থাকে। আপনি সরাসরি session() হেল্পার ফাংশন ব্যবহার করতে পারেন।

$session = session();

সেশন কনফিগারেশন

সেশন কনফিগারেশনটি app/Config/App.php ফাইলে সংজ্ঞায়িত করা হয়।

প্রাথমিক সেটআপ:

public $sessionDriver = 'CodeIgniter\Session\Handlers\FileHandler';
public $sessionCookieName = 'ci_session';
public $sessionExpiration = 7200; // সেকেন্ডে সময়
public $sessionSavePath = WRITEPATH . 'session';
public $sessionMatchIP = false;
public $sessionTimeToUpdate = 300;
public $sessionRegenerateDestroy = false;

ড্রাইভার অপশন:

  • FileHandler (ডিফল্ট): ফাইল-ভিত্তিক সেশন।
  • DatabaseHandler: ডাটাবেসে সেশন সংরক্ষণ।
  • MemcachedHandler: Memcached ব্যবহার করে।
  • RedisHandler: Redis ব্যবহার করে।

সেশন ব্যবহারের পদ্ধতি

১. সেশনে ডেটা সংরক্ষণ করা

$session = session();
$session->set('username', 'JohnDoe');
$session->set(['email' => 'johndoe@example.com', 'logged_in' => true]);

২. সেশন থেকে ডেটা রিড করা

$session = session();
$username = $session->get('username'); // একক মান
$allData = $session->get(); // সমস্ত সেশন ডেটা

৩. সেশন থেকে নির্দিষ্ট ডেটা মুছে ফেলা

$session = session();
$session->remove('username'); // নির্দিষ্ট ডেটা মুছে ফেলা

৪. সমস্ত সেশন ডেটা মুছে ফেলা

$session = session();
$session->destroy(); // সমস্ত সেশন ধ্বংস

Flashdata ব্যবহারের পদ্ধতি

Flashdata হলো সেশন ডেটা, যা একবার রিড করার পরে স্বয়ংক্রিয়ভাবে মুছে যায়।

Flashdata সেট করা

$session = session();
$session->setFlashdata('success', 'Your data has been saved!');

Flashdata পড়া

$session = session();
echo $session->getFlashdata('success');

Tempdata ব্যবহারের পদ্ধতি

Tempdata হলো সেশন ডেটা, যা নির্দিষ্ট সময় পর্যন্ত সক্রিয় থাকে।

Tempdata সেট করা

$session = session();
$session->setTempdata('token', '123456', 300); // 300 সেকেন্ড বা ৫ মিনিট

Tempdata পড়া

$session = session();
echo $session->getTempdata('token');

Tempdata মুছে ফেলা

$session = session();
$session->removeTempdata('token');

সেশন ডাটাবেস ড্রাইভার ব্যবহার

১. ডাটাবেস টেবিল তৈরি

ডাটাবেস সেশন সংরক্ষণের জন্য একটি টেবিল তৈরি করতে হবে। উদাহরণ:

CREATE TABLE ci_sessions (
    id VARCHAR(128) NOT NULL,
    ip_address VARCHAR(45) NOT NULL,
    timestamp INT(10) UNSIGNED DEFAULT 0 NOT NULL,
    data BLOB NOT NULL,
    PRIMARY KEY (id),
    KEY `ci_sessions_timestamp` (`timestamp`)
);

২. কনফিগারেশন আপডেট

app/Config/App.php ফাইলে ডাটাবেস ড্রাইভার সেট করুন:

public $sessionDriver = 'CodeIgniter\Session\Handlers\DatabaseHandler';
public $sessionSavePath = 'ci_sessions'; // টেবিলের নাম

সেশন নিরাপত্তা

  • Session Regeneration: সেশন হাইজ্যাকিং প্রতিরোধের জন্য সেশন রিজেনারেট করুন:

    $session = session();
    $session->regenerate();
    
  • IP Address Match: সেশন কনফিগারেশনে sessionMatchIP অপশন true করে দিন:

    public $sessionMatchIP = true;
    
  • HTTP Only Cookies: কনফিগার করুন যেন সেশন কুকিজ শুধুমাত্র HTTP এর মাধ্যমে অ্যাক্সেসযোগ্য হয়:

    public $cookieHTTPOnly = true;
    

সেশন ব্যবহারের উদাহরণ

Controller:

<?php
namespace App\Controllers;

class SessionExample extends BaseController {
    public function index() {
        $session = session();
        $session->set('username', 'JohnDoe');
        $session->setFlashdata('success', 'Welcome, JohnDoe!');
        return view('session_view');
    }
}

View:

<?php if (session()->getFlashdata('success')): ?>
    <div class="alert alert-success">
        <?= session()->getFlashdata('success'); ?>
    </div>
<?php endif; ?>
<p>Username: <?= session()->get('username'); ?></p>

সারসংক্ষেপ

CodeIgniter-এর Session Management ডেভেলপারদের সেশন ডেটা সংরক্ষণ, নিরাপত্তা নিশ্চিত করা এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত করার জন্য একটি শক্তিশালী এবং সহজ পদ্ধতি প্রদান করে। Flashdata এবং Tempdata এর মতো ফিচার অ্যাপ্লিকেশনকে আরও কার্যকর করে তোলে।

Content added By
Promotion